Ошибка получения значения реквизитов с типом "дата" в запросах через COM-соединение

10.01.25

Интеграция - Перенос данных 1C

Описана ситуация, приводящая к ошибке получения значения реквизитов с типом "Дата" в запросах к другой информационной базе 1С через COM - соединение. Указаны условия, при которых ошибка появляется. Представлены элементарные пути обхода данной ошибки. Также представлены две простейшие информационные базы 1С 8.3 с открытым кодом для моделирования описываемой ситуации.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
Ошибка получения значения реквизитов с типом "дата" в запросах через COM-соединение
.zip 102,69Kb
2
2 Скачать бесплатно

Недавно мною обнаружен некорректное получение значение реквизитов объектов метаданных с типом "Дата" в запросах, осуществляемых через COM-соединение.

Ошибка воспроизводилась на платформах 1 С 8.3.20, 8.3.25 в файловых и серверных вариантах размещения информационных баз.

Суть ошибки заключается в том, что при выполнении запроса через COM-соединение к объекту метаданных с реквизитами типа “Дата” в случае, если значение реквизита менее  или равно “01.01.0100” в результат запроса попадает пустая дата “01.01.0001”. 

Для моделирования ситуации, в базе-источнике был  создан справочник "Исторические события", содержащий реквизиты "ДатаНачала" и "ДатаОкончания" с типом "Дата". В базе - приемнике создана обработка "Импорт исторических событий", которую можно открыть , запустить установку COM-соединения с базой-источником, выполнить в ней запрос к справочнику и вывести полученные данные.

Итог моделирования представлен на Скриншоте № 1.

 

 

Как видно, значения , которые имеют значения "01.01.0100" и меньше, выводятся некорректно. В то же время значения даты , которые  больше “01.01.0100”, в результат запроса попадают корректно.

Конечно, событий, учет которых ведется в 1С и  значения которых равны или меньше “01.01.0100”, честно говоря, не так много. Но все-таки полностью их исключать нельзя.  

Например, это может быть ошибка ввода пользователем . Часть пользователей устремлена не в будущее, а напротив, в прошлое. 

Пути обхода данной ошибки в виде “костылей” просты и незатейливы. 

Как вариант, можно в запросе к объекту - источнику разбивать реквизит с типом “Дата” на значение День, Месяц, Год, а затем на стороне базы приемника из этих отдельных значений вновь собирать значение исходного реквизита с помощью функции Дата(Год, Месяц, День) .

Пример такого "допиленного" запроса приведен в листинге функции ниже:

Функция ПолучитьТекстЗапросаИсторическихСобытий(ИспользоватьКостыль) 

ТекстЗапроса = ""; 

Если НЕ ИспользоватьКостыль Тогда 

   ТекстЗапроса = "ВЫБРАТЬ 
   | ИсторическиеСобытия.Код КАК Код, 
   | ИсторическиеСобытия.Наименование КАК Наименование, 
   | ИсторическиеСобытия.ДатаНачала КАК ДатаНачала, 
   | ИсторическиеСобытия.ДатаОкончания КАК ДатаОкончания 
   |ИЗ 
   | Справочник.ИсторическиеСобытия КАК ИсторическиеСобытия 
   | 
   |УПОРЯДОЧИТЬ ПО 
   | Код"; 


Иначе 

   ТекстЗапроса = "ВЫБРАТЬ 
   |   ИсторическиеСобытия.Код КАК Код, 
   |   ИсторическиеСобытия.Наименование КАК Наименование, 
   |   ИсторическиеСобытия.ДатаНачала КАК ДатаНачала,  
   | 
   //{{Начало блока  Костыльное добавление 
   |   ДЕНЬ(ИсторическиеСобытия.ДатаНачала) КАК ДеньДатаНачала, 
   |   МЕСЯЦ(ИсторическиеСобытия.ДатаНачала) КАК МесяцДатаНачала, 
   |   ГОД(ИсторическиеСобытия.ДатаНачала)   КАК ГодДатаНачала, 
   // Конец блока Костыльное добавление }} 
   | 
   |   ИсторическиеСобытия.ДатаОкончания КАК ДатаОкончания, 
   | 
   // {{ Начало блока Костыльное добавление 
   |   ДЕНЬ(ИсторическиеСобытия.ДатаОкончания) КАК ДеньДатаОкончания, 
   |   МЕСЯЦ(ИсторическиеСобытия.ДатаОкончания) КАК МесяцДатаОкончания, 
   |   ГОД(ИсторическиеСобытия.ДатаОкончания)   КАК ГодДатаОкончания 
   // Конец блока Костыльное добавление }} 
   |
   |ИЗ 
   | Справочник.ИсторическиеСобытия КАК ИсторическиеСобытия 
   |УПОРЯДОЧИТЬ ПО 
   | Код"; 

КонецЕсли; 

Возврат ТекстЗапроса; 

КонецФункции // ПолучитьТекстЗапросаИсторическихСобытий() 

В итоге на стороне приемника можно получить корректные значения для реквизитов с типом "Дата" для значений дат "01.01.0100" и менее , как показано на скриншоте № 2

 

 

В качестве модельных, подопытных баз прикладываются файлы выгрузок двух тестовых баз - источника и приемника. 

Для экспериментов, помимо установленной платформы 1С 8.3, требуется зарегистрированная в системе библиотека comcntr.dll. 

См. также

SALE! 10%

Перенос данных 1C Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

55778 50200 руб.

04.08.2015    169053    351    280    

385

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27660 руб.

12.06.2017    143950    832    297    

431

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.20.x), также подходят для релиза 11.5 (11.5.19.x).

35000 31500 руб.

23.07.2020    54187    239    73    

194

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

55778 50200 руб.

15.04.2019    73143    190    152    

129

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

53111 47800 руб.

03.12.2020    37602    101    68    

97

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.240.x) и БП 3.0 (3.0.169.x). Правила подходят для версии ПРОФ и КОРП.

35000 31500 руб.

15.12.2021    25171    175    51    

133

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.

25.09.2016    81957    333    253    

283

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

120000 руб.

19.08.2020    25973    25    1    

27
Оставьте свое сообщение