Имя: Пароль:
1C
1С v8
Логика контроля изменений в самописном обмене
,
0 CaIIIka
 
09.09.15
11:27
Здравствуйте! Есть самописная база 1с8. Схемотично структура:

Справочник.Товары
РегистрСведений.ЦеныТоваров
РегистрНакопления.ОстаткиТоваров

ПланОбмена.Основной (включена авторегистрация по вышеперечисленным объектам)

Есть три узла плана обмена с различными настройками: выгружать товары, выгружать цены, выгружать остатки. Расписание выгрузки у них тоже различное.

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

        Запрос.Текст =
        "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
        |    ЦеныТоваров.Товар.Ссылка КАК ИдТовара,
        |    ЦеныТоваров.ВидЦены.Ссылка КАК ИдТипаЦены,
        |    ЦеныТоваров.Цена КАК Цена,
        |    ЦеныТоваров.Валюта.Наименование
        |ИЗ
        |    РегистрСведений.ЦеныТоваров.СрезПоследних(
        |            &ТекДата,
        |            ВЫБОР
        |                КОГДА &ПолнаяВыгрузка
        |                    ТОГДА ИСТИНА
        |                ИНАЧЕ Товар.Ссылка В
        |                        (ВЫБРАТЬ
        |                            ЦеныТоваровИзменения.Товар
        |                        ИЗ
        |                            РегистрСведений.ЦеныТоваров.Изменения КАК ЦеныТоваровИзменения
        |                        ГДЕ
        |                            ЦеныТоваровИзменения.Узел = &Узел)
        |            КОНЕЦ) КАК ЦеныТоваров
        |
        |УПОРЯДОЧИТЬ ПО
        |    ИдТовара,
        |    ИдТипаЦены";


С остатками засада получилась. В таблице РегистрНакопления.ОстаткиТоваров.Изменения нет поля "Товар", а есть поле "Регистратор". В таблице РегистрНакопления.ОстаткиТоваров.Остатки нет поля "Регистратор".

Можно выйти из положения, убрав авторегистрацию с регистра накопления вообще, и регистрировать изменения справочника "Товары" в модуле набора записей регистра накопления "Остатки товаров" при записи движений остатков любыми объектами БД. А при выгрузке остатков из регистра смотреть отбор по таблице Справочник.Товары.Изменения.

Но как тогда очищать изменения? Ведь расписание выгрузки самого справочника и остаков у каждого свое. Почищу при выгрузке товаров - не выгрузятся остатки, и наоборот.

Направьте пожалуйста на путь истинный... Извиняюсь если где и было уже, но порылся, не нашел. Везде правильность выборки или поля запросов обсуждают, а мне другое нужно.
1 CaIIIka
 
09.09.15
11:40
Создавать дополнительные объекты БД и всяческие таблицы для контроля нежелательно. Хотелось бы узнать как правильно сделать, дабы огород не городить.

Пытался было получить остатки для выгрузки через таблицу ОстаткиИОбороты с конечным остатком и периодичностью Регистратор, но поле Регистратор нельзя использовать в условии виртуальной таблицы регистра накопления (чтобы сравнить с наличием Регистратора в таблице изменений этого регистра).
2 CaIIIka
 
10.09.15
11:26
Громоздкий вопрос получился чтоли??
Подскажите пожалуйста где и как правильно брать измененные движения документов из регистра накопления в разрезе товаров? Нужно для выгрузки текущих остатков на сайт по тем товарам, по которым движения были с момента последнего обмена.

Не работаю с типовыми конфами вообще. Залез посмотреть как там сделано, мозг опух напрочь... Не вкурю как правильно с изменениями регистра накопления работать. Где посмотреть изменения в разрезе движений. В таблице регистрации изменений у регистра накопления только ссылка на регистратор. Неужели выборкой по таб части регистратора, который в этой таблице засветился??
3 ДенисЧ
 
10.09.15
11:27
в разрезе отдельных движений не увидишь. Только в разрезе набора записей
4 CaIIIka
 
10.09.15
11:33
где взять этот набор записей?
5 CaIIIka
 
10.09.15
11:35
движения каждого документа из таблицы изменений выбирать?
6 CaIIIka
 
10.09.15
11:38
всмысле движения документов, которые в этой таблице засветились
7 kosts
 
10.09.15
11:55
В типовом обмене по правилам. Вроде, если в конфигурацию Конвертация скинуть структуру содержащую движения (т.е. при выгрузке структуры снять галочки "не выгружать движения"), то можно настроить обмен движениями аналогично табличной части.
8 CaIIIka
 
10.09.15
11:59
(7) хм, конвертацией не пользуюсь, обмен руками с нуля пишу. Все было ОК, пока до остатков не дошел. Сейчас нужно получить остатки товаров с отбором по товарам, по которым движения были с момента последнего обмена данными.
9 kosts
 
10.09.15
12:23
10 CaIIIka
 
10.09.15
14:01
Вопрос :)
Как получить остатки товаров с отбором по товарам, по которым движения были с момента последнего обмена данными?

Таблица 1: РегистрНакопления.ОстаткиТоваров.Остатки

Товар
Склад
КоличествоОстаток

Таблица 2: РегистрНакопления.ОстаткиТоваров.Изменения

Узел
НомерСообщения
Регистратор (подразумевается наличие таблицы "Товары" -> Товар, Количество)

Можно как-то использовать таблицу 2 в качестве отбора для таблицы 1? Т.е. получить список товаров из второй таблицы (движения в разрезе товаров или набор записей с движениями этих товаров), по которым были движения в последнее время.
11 Михаил Козлов
 
10.09.15
14:17
Может такая схема подойдет:
- регистрировать только номенклатуру (при изменении ее самой, цен и остатков);
- в выгрузку вместе с товарами помещать цены и остатки;
- при получении квитка удалять регистрацию.

Мне кажется, примерно так был устроен обмен с сайтом в УТ 10.3.
12 CaIIIka
 
10.09.15
14:20
(11) Спасибо, но в (0) я писал:

Можно выйти из положения, убрав авторегистрацию с регистра накопления вообще, и регистрировать изменения справочника "Товары" в модуле набора записей регистра накопления "Остатки товаров" при записи движений остатков любыми объектами БД. А при выгрузке остатков из регистра смотреть отбор по таблице Справочник.Товары.Изменения.

Но как тогда очищать изменения? Ведь расписание выгрузки самого справочника и остаков у каждого свое. Почищу при выгрузке товаров - не выгрузятся остатки, и наоборот.
13 Михаил Козлов
 
10.09.15
14:22
(12) Выгружать остатки вместе с товарами нельзя?
14 CaIIIka
 
10.09.15
14:23
Хорошо бы, но цены по одному интервалу отправляются, остатки по другому (гораздо чаще). Да и при каждом движении товара будет отправляться объект "Товар" с 50 реквизитами, а мог бы только остаток отправиться. И 1С и сайту тяжело будет при больших движениях товара.
15 CaIIIka
 
10.09.15
14:24
А когда остаток отправляется, то пишутся только УИДы товара и склада и остаток.
16 CaIIIka
 
10.09.15
14:33
О, самому идея в голову пришла:
У меня несколько узлов, у каждого своя настройка что и когда выгружать (всмысле какие объекты и с какими интервалами). Можно запретить авторегистрацию по всем объектам состава плана обмена, регить все вручную для каждого нужного узла в зависимости от ситуации (при записи товара регить узел с настройкой выгружать товары, при движении в остатках регить узел с выгрузкой остатков и т.д.). А при выгрузке по узлам все само собой расфасуется.

Единственное как бы при программировании ручной регистрации в косяки не уперся... Не приходилось в ручную регить (там вроде с регистрами засада какая-то с ключевыми полями). Да и писанины гектар. Но думаю это верный путь должен быть... Остановите если кто в курсе :)
17 CaIIIka
 
10.09.15
14:40
+(16) А от регистрации регистров получается вообще можно уйти. Все в Справочник.Товары регить для нужного узла
18 Franchiser
 
гуру
10.09.15
14:44
КД - религия не позволяет?
19 CaIIIka
 
10.09.15
14:52
(18) Позволяет, но смысл внедрять ее для использования (все механизмы с правилами) и использовать для выгрузки довольно простых объектов. База полностью нетиповая самописная и с КД не дружит. Тем более это же не ручная выгрузка, а по регламенту на сервере каждые 5 минут например. Прошу прощения если я не в ту степь. Возможно с 2010 года все изменилось (именно тогда я проходил курс обучения по обмену, где частью его была КД). Там описывалось как создать обмен по-быстрому на коленках и не очень быстрый по ресурсам.
20 Franchiser
 
гуру
10.09.15
19:04
Не очень понятна проблема, если я не ошибаюсь в таблице регистраций изменений информация хранится по узлам плана обмена, или не так?
Можно очищать наверно ненужные регистрации для каждого плана обмена.
21 Franchiser
 
гуру
10.09.15
19:06
(19) объединить твою конфу с бсп в этой части думаю займет не больше часа
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.