Как выгружать цены

22.05.19

Интеграция - Внешние источники данных

Как аккуратно передать цены в систему, в которой нет понятия периодичности цены? Как отложить те цены, которые начнут действовать послезавтра? Как случайно не выгрузить цены, которые изменились, но уже не актуальны?

Скачать файл

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

Наименование По подписке [?] Купить один файл
Действующие цены номенклатуры
.cf 10,94Kb
1
1 Скачать (1 SM) Купить за 1 850 руб.

В 1С принята известная схема ведения цен: периодическй регистр сведений, в который цены записываются с датой начала действия. Соответственно когда нам нужна цена товара - мы берем СрезПоследних на текущую дату на этом регистре. Все логично.

Припомним также, стандартную систему регистрации изменений в 1С: записал - зарегистрировал изменение; прочитал изменения - передал - забыл. Тоже простая и логичная тема.

Проблема

Но когда нам нужно передать цены куда-то, например, в кассовую систему или на сайт, где ничего не слышали про дату начала действия цены и цена одна: текущая - механизм регистрации изменений и СрезПоследних никак не желают "переваривать" такую логику. В этом месте очень помог бы механизм типа "РегистрСведений.ЦеныНоменклатуры.СрезПоследних().Изменения", но ничего подобного в платформе нет. Приходится колхозить на коленке, продумывая по дороге такие варианты:

  • цену назначили с послезавтра.
  • "случайно" перепровели документ, который перезаписал уже не актуальные цены двухнедельной давности.
  • отменили проведение документа с актуальными ценами, начали действовать цены двухнедельной давности.
  • удалили несколько строк из документа с актуальными ценами.

Это только некоторые из тех вариантов, которые возможны на практике, думаю можно придумать и более витееватые сценарии. Понятно, что такое обращение с системой больше похоже на ее изнасилование, чем на нормальную работу, но если 1С это все не запрещает - у нас нет другого выхода, кроме как поддержать это и в нашем обмене.

Решение

Качественно и гарантированно решить все эти проблемы "на коленке" не получится, придется развести Архитектуру. Нам потребуется промежуточный регистр.

Делаем регистр сведений ДействующиеЦеныНоменклатуры, отличающийся от стандартного регистра ЦеныНоменклатуры, следующим:

  • новый регистр не должен быть подчинен регистратору и не должен быть периодическим
  • данные о регистраторе и дате начала действия цены добавим в реквизиты нового регистра на всякий случай

В этом регистре будем хранить внезапно действующие цены. Т.е. состояние нового регистра должно соответствовать состоянию виртуальной таблицы РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ТекущаяДата) с поправкой на задержку заполнения. Иными словами, мы виртуальную таблицу РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ТекущаяДата) делаем реальной в РегистрСведений.ДействующиеЦеныНоменклатуры. Регистрировать изменения цен и выгружать их также будем из нового регистра по простой и линейной логике: изменилось - выгрузил.

Наполнять регистр, будем по следующей логике: выполняем запрос, который соединяет срез последних ЦеныНоменклатуры и регистр ДействующиеЦеныНоменклатуры и выбирает те строки, у которых цена отличается. Далее обновляем в регистре действующих цен полученными из запроса строками. Стоит обратить внимание на тот момент, что нужно делать полное соединение, т.к. записей может не оказаться с любой стороны.

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

Производительность этого дела такова, что на неплохом серверном железе, при 10000 активной и 50000 всей номенклатуры и 500 видах цен вся логика отрабатывает в районе 5 минут. В моем случае, происходит это раз в час отдельным регламентом.

Описанная механика позволяет обработать весь спектр возможных диверсий действий пользователей. Уже готовая подсистема приложена. Платформа 8.3.9.2233

См. также

Внешние источники данных Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование Конфигурации 1cv8 Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

28500 руб.

15.11.2022    21393    21    49    

39

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

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

84000 руб.

24.04.2017    51642    104    165    

91

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

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

84000 руб.

05.10.2022    11179    13    8    

15

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

Внешняя обработка загрузки данных из файла-выгрузки, сформированного в программе F3 TAIL версии 3.4 (и выше) или еФарма версии 2.1, в базу конфигурации 1С: Бухгалтерия предприятия 8, ред. 3.0 (базовая, ПРОФ, КОРП, ФРЕШ).

13200 руб.

19.12.2016    47626    87    105    

67

Внешние источники данных Облачные сервисы, хостинг Программист Бизнес-аналитик Пользователь Руководитель проекта Платформа 1С v8.3 8.3.14 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Бытовые услуги, сервис Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Гостиничный бизнес Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Легкая промышленность, мода и одежда Управленческий учет Платные (руб)

Расширение позволяет автоматизировать управление картами лояльности и взаимодействие с покупателями при помощи интеграции корпоративной системы 1С и специализированного облачного сервиса "CARDPR". Автоматическая онлайн синхронизация сведений о владельце электронной карты лояльности и баланса бонусных баллов на карте между корпоративной системой 1С и мобильным устройством покупателя. Оповещение покупателя об изменении баланса его электронной карты лояльности и проведении каких-либо маркетинговых акций в компании при помощи рассылки push-сообщений на его мобильное устройство.

36000 руб.

20.07.2023    3346    1    2    

12

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

Перенос данных из Парус-Зарплата Бюджет 7.71 в ЗИКГУ 3.1.27 для начала работы системы. Загрузка информации по физическим лицам, сотрудникам, начальной штатной расстановки и данных для расчета среднего заработка.

19200 руб.

06.07.2012    164999    48    157    

97
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ltfriend 23.05.19 08:27 Сейчас в теме
Что-то я не понял, а в чем проблема получить из регистра цены на нужную дату? Зачем городить огород?
2. m-rv 974 23.05.19 08:58 Сейчас в теме
(1) в этом случае вам придется выгрузить все цены, а приведенный алгоритм позволяет получить данные для инкрементной выгрузки
3. hillsnake 35 23.05.19 13:47 Сейчас в теме
(2) откройте для себя Кд3
Оставьте свое сообщение