Никита Полевой, не вникал в пример выше, но там могут быть вперемешку структуры и соответствия - это словари, в которых ключем для структур всегда являются строки допустимые для именования переменных, а у соответствий ключами могут быть данные любых типов. Если соответствиям дать строковые ключи, то при сериализации от структур их отличит только идентификатор типа.
По ссылочному типу вот пример элемента справочника:
{"#",655fd168-ab6a-4863-a2d5-401497aceec3,75:8e9d005056850cfb11e5ef6e8ffb8cac}
Третий параметр - это скорее всего ключ в физической таблице, с которой ассоциирован второй параметр (логично, но не проверял).
Для пустой ссылки данного типа представление будет такое:
{"#",655fd168-ab6a-4863-a2d5-401497aceec3,75:00000000000000000000000000000000}
Вы почти все правильно угадали. В вопросе внутреннее представление некоторого объекта.
В 1С существуют примитивные типы, которые вы верно распознали: 'S' - строка, 'N' - число, 'B' - boolean, 'D' - дата. Еще есть ссылочные типы, но тут их нет и это класс. А еще есть коллекции.
Коллекций есть несколько видов - массивы, таблицы значений, списки значений, структуры и соответствия (еще есть несколько производных, но не уверен в том, что они сериализируются). Это объекты при сериализации представляются в виде строк {x,x,x}, где первым элементом всегда идет '#', вторым будет идентификатора типа и в третей позиции собственно значение. Структура значения зависит от типа - для массива просто элементы через запятую, а для той же таблицы нужно описать имена и типы колонок.
В целом все довольно очевидно и распознается "на глаз". Когда-то давно писал инструкцию по парсингу для нашего программиста С++, жаль что она утеряна....
Adel Khalitov, начнем с того, что сервер 1С не поддерживает ICMP и потому его пинговать бессмысленно. Если хотите проверить открытость порта то это telnet или Test-NetConnection (PowerShell) на винде, или netcat на линуксах. Далее вам нужно посмотреть ваши свойства кластера и сделать переброс всех остальных портов.
65536, по разному бывает. В любом случае глупо переходить без тестового обновления копии, в которую загнать пользователей и немного проклацать "кастомные фичи".
ViktorGuerro, 1) хз что такое "рассписание" и для чего оно нужно 2) хз что не работает
Когда я делал похожий график посещений (только в днях были табельные отметки - 8 для робочих дней, б - больничные, о - отпуска и т.д.), то у моего документа была табличная часть график. В табличной части помимо работника были реквизиты День1, День2...., День31 (автонумерация при копировании). В зависимости от выбранного месяца на форме скрывал видимость лишних дней (в феврале может быть только 28, а в апреле 30). Тоже был подсчет общего количества дней (где 8 или 4) - при изменении в табличной части цикл типа такого (пишу по памяти):
ТекущаяСтрока = Элемент.ТекущиеДанные;
ТекущаяСтрока.РабочихДней = 0;
Для Счетчик=1 по 31 Цикл
ЗначениеКолонки = ТекущаяСтрока["День"+Счетчик];
Если ЗначениеКолонки = "8" или ЗначениеКолонки = "4" Тогда
ТекущаяСтрока.РабочихДней = ТекущаяСтрока.РабочихДней + 1;
КонецЕсли;
КонецЦикла;
MHO нет прямой связи между сжатием журнала и ошибкой 1С.
hint000, только в данном случае 1С просто ретранслирует из СУБД ошибку взаимоблокировок.
Я бы в такой ситуации попробовал бы выгрузить *.dt и загрузить в новую базу. 50 ГБ - это примерно 4-5 часов. Если нужно восстанавливать работоспособность текущей, то с помощью ТИИ реструктуризировал бы таблицы и пересчитал итоги.
Я не совсем понимаю как быть когда выйдет обновление и как его накатывать так, чтобы внесенные изменения сохранились.
Аккуратно :)
На самом деле ничего сложного. Включайте режим "Объект поставщика редактируется с сохранением поддержки" только для тех объектов, которые будете изменять. Для всего прочего обновление будет проходить незаметно, а вероятность изменения поставщиком программы печати штрихкодов очень низка. Если сильно боитесь потерять наработки, то увидев конфиликт можете отменить обновление и вызвать специалиста из франча.
Алексей Фисенко, ошибка 500 выскакивает в вашем Worpress, а 1С её просто показывает пользователю. Если бы проблема была в таймаутах, то 1С говорило бы про превышение времени ожидания ответа.
По-умолчанию, таймаут при открытии соединения на стороне 1С вообще не устанавливается. Пока nginx или apache сами не закроют соединение, 1С готова хоть целый день висеть и ждать ответ.
Советую посмотреть логи на стороне веб-сервера. Возможно некорректный формат архива.
Алексей Фисенко, увеличение лимитов - это был 1-из-9, а результаты остальных 8 попыток? Если хотите получить помощь, то дополните свой вопрос - так у специалистов Worpress будет больше шансов понять причину проблемы.
ITF, количество циклов вполне нормальное. Только не понятно зачем внутри проверять на равность типа Тип("СправочникСсылка.НоменклатурныеГруппы"), если выше уже проверили на содержание типа - сразу сравнивай значение с искомым, не теряй время.
Глобальный контекст (Global context)
НайтиПоСсылкам (FindByRef)
Синтаксис:
НайтиПоСсылкам(<СписокСсылок>, <ОбластьПоиска>, <ВключитьОбъекты>, <ИсключитьОбъекты>)
Параметры:
<СписокСсылок> (обязательный)
Тип: Массив.
Массив со списком ссылок на объекты, ссылки на которые нужно найти.
<ОбластьПоиска> (необязательный)
Тип: Массив.
Определяет область поиска объектов. Область устанавливается комбинацией разделителей, в состав которых включены объекты метаданных, среди данных которых следует выполнять поиск.
Элемент массива имеет тип Массив.
Элемент вложенного массива имеет тип:
Объект метаданных – Общий реквизит, разделяющий данные.
Строка – имя общего реквизита, разделяющего данные.
По умолчанию имеет значение Неопределено.
Допустимые значения:
Неопределено,
Массив с комбинациями разделителей, определяющий область поиска,
Пустой массив - область поиска определяется параметрами метода <ВключитьОбъекты> и <ИсключитьОбъекты>.
Примечание. Если комбинация разделителей содержит повторы, то вызывается исключение, т.к. в конфигурации не может быть объектов метаданных, дважды включенных в состав одного разделителя.
Значение по умолчанию: Неопределено.
<ВключитьОбъекты> (необязательный)
Тип: Массив.
Позволяет явно указать объекты метаданных, которые должны присутствовать в области поиска ссылок на объекты.
Элементом массива могут быть:
Объект метаданных.
Строка – полное имя объекта метаданных.
Допустимые значения:
Неопределено,
Пустой массив,
Массив объектов метаданных.
Значение по умолчанию: Неопределено.
<ИсключитьОбъекты> (необязательный)
Тип: Массив.
В качестве элементов массива могут выступать:
Объект метаданных,
Строка – полное имя объекта метаданных.
Свойство позволяет явно указать объекты метаданных, которые следует исключить из области поиска ссылок на объекты.
Допустимые значения:
Неопределено
Пустой массив (нет объектов, которые необходимо дополнительно включить в область поиска).
Массив объектов метаданных.
Значение по умолчанию: Неопределено.
Возвращаемое значение:
Тип: ТаблицаЗначений.
Возвращает ссылки на найденные объекты в виде ТаблицаЗначений.
Первая колонка - исходная ссылка.
Вторая колонка - ссылка на объект, если найденная ссылка соответствует объектной таблице, или значение, олицетворяющее запись необъектной таблицы.
Третья колонка - объект метаданных, которому соответствуют данные, в которых найдена ссылка.
Описание:
Осуществляет поиск ссылок на объекты, переданные в параметре <СписокСсылок>.
Поиск выполняется только в данных, которые доступны в рамках текущего сеанса с учетом разделения (условное разделение также учитывается).
Поиск осуществляется среди всех данных, из которых могут быть ссылки на переданные объекты. Если у пользователя нет доступа к объекту, будет вызвано исключение.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Вызов метода выполняет обращение к серверу.
Примечание:
Если параметр <ОбластьПоиска> не определен или используется режим совместимости конфигурации Версия8_3_4 и ниже, поиск осуществляется во всех тех данных, которые доступны в рамках текущего сеанса с учетом разделения (условное разделение учитывается).
На мобильной платформе параметры <ОбластьПоиска>, <ВключитьОбъекты>, <ИсключитьОбъекты> игнорируются.
Пример:
Ссылки = НайтиПомеченныеНаУдаление();
ТабСсылок = НайтиПоСсылкам(Ссылки);
Для Каждого Ссылка из ТабСсылок Цикл
Сообщить ("" + СокрЛП(Ссылка[0]) + " " + СокрЛП(Ссылка[1]));
КонецЦикла;
ITF, все проще. Закинь ссылку на старую номенклатурную группу в массив и дай на вход функции НайтиПоСсылкам() - на выходе таблица с метаданными и ссылками на объекты, где изменять. Для начала посмотри третью колонку - если видов метаданных мало, то лучше руками пропиши в коде какие реквизиты проверить на соответствие старому значению и требующие замену; иначе, как и планировал, можешь бегать по метаданным. А еще можешь запросом к бухгалтерским оборотам выбрать все регистраторы, которые делают движения со старой номенклатурной группой, а потом исправить и перезаписать их наборы записей.