Имя: Пароль:
1C
1С v8
Обращение к регистру бухгалтерии в расширении
0 TomWaits
 
22.05.17
19:17
Пытаюсь достучаться запросом к субконто РегистрБухгалтерии.Хозрасчетный, но в расширении оно не доступно.
При добавлении РегистрБухгалтерии.Хозрасчетный в расширение по идее должны бы добавиться все связанные объекты, но этого не происходит.
Правильно ли я понимаю, что чтобы доступ к субконто появился, необходимо перенести все объекты имеющие отношение к субконто или я иду неверным путем?
1 AlvlSpb
 
22.05.17
19:31
(0) Верным
2 Dmitrii
 
гуру
22.05.17
19:41
(0) Неверным.
Это в конфигураторе тебе из расширения могут быть недоступны какие-то объекты метаданных.
При работе конфигурации с расширением расширение "увидит" все объекты метаданных основной конфигурации.

Так что не надо поласкать мозг с дублированием всех объектов, которые выступают в качестве типа значения ПВХ ВидыСубконто.

Если проблема только в том, чтобы всё работало в конструкторе запроса (чтобы конструктор видел объекты и таблицы основной конфигурации), то пишите текст запроса (запускайте конструктор запроса)  не в расширении, а, например, в модуле внешней обработки или в любом модуле любого объекта основной конфигурации. А потом полученный текст вставите в ваше расширение.
3 AlvlSpb
 
22.05.17
19:49
(2) Ой ошибаешься. Если, например, субконто Контрагент, то не включив в расширение справочник Контрагенты НИЧЕГО не увидишь.
4 Мимохожий Однако
 
22.05.17
19:52
Эксперимент всех рассудит
5 TomWaits
 
22.05.17
19:56
(2) (3) Запрос из консоли выполняется (т.е. из основной конфигурации).
В моем случае этот запрос необходимо добавлять к динамическому списку. При установке запроса прямо на форме - ошибка при проверке запроса. При установке запроса в коде - ошибка при выполнении.
По всей видимости действительно необходимо добавить все объекты в расширение.

Полный перечень как сформировать? Добавил многое, но возможно что то упустил.
6 AlvlSpb
 
22.05.17
20:13
(5) Не надо добавлять все. Алгоритм такой. Добавляешь все объекты, которые участвуют в запросе (в коде). Например Идет обращение к справочнику Контрагенты. Контрагент.Код, Контрагент.Наименование значит в расширении должен быть справочник и эти реквизиты. При добавлении справочника (а особенно, формы справочника или документа), в расширение накидает кучу мусора. Пишешь код и потом начинаешь удалять все лишнее из расширения, начиная с добавленных объектов. Т.е. как в примере сначала удаляешь все, кроме неудаляемого (будет предупреждение) из справочника Контрагенты, потом по всей базе. В итоге останется только то, что действительно необходимо. Львиная доля (мусор) весь даст себя удалить
7 Dmitrii
 
гуру
22.05.17
20:24
(5) (6) Вы бредите...
Если бы всё было так как вы говорите, то расширения дублировали бы основную конфигурацию. А это не нужно.
В расширение помещаются только те объекты, которые необходимо расширить.

>> Если, например, субконто Контрагент, то не включив в расширение справочник Контрагенты НИЧЕГО не увидишь

Мне не нужно его видеть!!! Я не собираюсь расширять справочник Контрагенты!!!
Достаточно, чтобы расширение увидело этот справочник. А оно увидит его В МОМЕНТ ИСПОЛНЕНИЯ.
Пока ведётся работа с расширением в конфигураторе, вполне нормально, что расширение не видит объекты основной конфигурации (вернее это не совсем нормально, но это вопрос к писателям конфигуратора).
8 TomWaits
 
22.05.17
20:27
Запрос проще некуда:

ВЫБРАТЬ
       ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
       ХозрасчетныйОстатки.Субконто2 КАК Склад,
       ХозрасчетныйОстатки.Организация,
       ХозрасчетныйОстатки.КоличествоОстаток КАК Количество
   ИЗ
       РегистрБухгалтерии.Хозрасчетный.Остатки(&НаДату, ) КАК ХозрасчетныйОстатки
   УПОРЯДОЧИТЬ ПО
       Организация,
       Склад

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

Возможно что то из этого лишнее, но - Субконто все равно не доступно в расширении!
9 TomWaits
 
22.05.17
20:28
(8) Забыл справочник "Организации"
10 AlvlSpb
 
22.05.17
20:28
(7) Много расширений написали? Только честно. А то, без обид, создалось впечатление, что утверждаете только на основании каких-то прочитанных данных, а не опыта применения.
11 AlvlSpb
 
22.05.17
20:32
(8) Где используете запрос? Т.е. из какого модуля, какой формы вызываете его?
А так. Добавлено должно быть только:
РегистрБухгалтерии, справочники Номенклатура, Организации, и справочник отвечающий за склад (СтруктурныеЕдиницы или Склады, это как у вас в конфигурации). Больше ничего не надо
12 TomWaits
 
22.05.17
20:38
(11) Запрос в динамическом списке, находящемся на форме справочника.
Конфа БП 3.0.
РегистрБухгалтерии.Хозрасчетный был добавлен в первую очередь, полный список что добавил описал в посте (8)
13 AlvlSpb
 
22.05.17
20:40
(12) А расширение подключается? Не ругается на безопасный режим?
14 AlvlSpb
 
22.05.17
20:41
(12) Какой справочник? Проверю на своей конфе
15 TomWaits
 
22.05.17
20:43
(13) ДА, все подключается.
Если убрать субконто из запроса то все работает.
При этом как писал выше - в консоли запрос выполняется без проблем - т.е. сам запрос без ошибок.
(14) Справочник Номенклатура - но думаю это не принципиально. Динамический список добавлен новый - суть которого показывать остатки на складах по выбранной в справочнике номенклатуры позиции.
16 h-sp
 
22.05.17
20:45
(15) этот запрос и в основной у вас не сработает. Счет не указал, какие могут быть субконто?
17 TomWaits
 
22.05.17
21:04
(16) Логически я ваш довод понимаю, вот только вывод запроса для меня не сильно меняется от добавления поля "ХозрасчетныйОстатки.Счет", т.к. аналитика по счету в данном случае меня не интересует. И да - запрос работает, можете проверить.
18 AlvlSpb
 
22.05.17
21:45
(17) Никогда не связывался с субконто.НИКАК не могу найти ЧТО привязано к хозрасчетному. Тоже не получается
19 AlvlSpb
 
22.05.17
22:08
(17) Разобрался. Добавьте в расширение, то что писал в (11)  и ФОРМУ СПИСКА регистра бухгалтерии Хозрасчетный. Субконто станет доступным
20 AlvlSpb
 
22.05.17
22:12
И (16) прав. Где-то потом в коде надо делать отбор в динамическом списке по счету и, как понял, номенклатуре, иначе вываливает все в список. Удачи
21 TomWaits
 
23.05.17
08:58
Запрос выше был скорее тестовым, на него сильно не заморачивался, важно было понять как с регистром работать.
А так вот запрос, который выдает остатки по позиции в разрезе склада и без счетов:
ВЫБРАТЬ
    ХозрасчетныйОстатки.Субконто1.Ссылка КАК Номенклатура,
    ХозрасчетныйОстатки.Субконто2.Ссылка КАК Склад,
    ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) КАК Количество
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, , , ) КАК ХозрасчетныйОстатки
ГДЕ
    ХозрасчетныйОстатки.Субконто1.Ссылка ССЫЛКА Справочник.Номенклатура
    И ХозрасчетныйОстатки.Субконто2.Ссылка ССЫЛКА Справочник.Склады
    И ХозрасчетныйОстатки.Субконто1.Ссылка = &Ном

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

Вечером проверю (19) отпишусь о результате.
22 h-sp
 
23.05.17
09:28
ХозрасчетныйОстатки.Субконто2.Ссылка КАК Склад,  за такое надо расстреливать из крупнокалиберного пулемета. Пиши нормально

ХозрасчетныйОстатки.Субконто2 КАК Склад,

скорость работы увеличится в десятки раз.
23 AlvlSpb
 
23.05.17
10:10
(21) Да. С запросом немного не так. Я бы переделал через Выразить и отбор по номенклатуре счету в параметрах виртуальной таблицы

ВЫБРАТЬ
    ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто1 КАК Справочник.Номенклатура) КАК Номенклатура,
    ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто2 КАК Справочник.Склады) КАК Склад,
    СУММА(ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0)) КАК Количество
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет  = &Счет, , Субконто1 = &Ном) КАК ХозрасчетныйОстатки

СГРУППИРОВАТЬ ПО
    ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто1 КАК Справочник.Номенклатура),
    ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто2 КАК Справочник.Склады)

&Счет = 41.01 - товары на складах Если не указать, опять выдает несколько значений. Ну и работать будет значительно быстрее чем приведенный вами
24 TomWaits
 
23.05.17
11:28
(22) (23) молод и неопытен =(
спасибо за разъяснения
25 TomWaits
 
23.05.17
17:32
Все заработало. Еще раз спасибо за помощь.
P.S. только для склада изменил Субконто2 на Субконто3
26 AlvlSpb
 
23.05.17
17:42
(25) По скорости работы есть разница? И сделай расширение красивым по алгоритму как в (6)
27 mikecool
 
23.05.17
17:46
(0) проверил недавно - не добавляешь объекты и они в запросе доступны, но конструктор запроса ругается на отсутствие этих объектов
так что - править запрос в основной конфиге и переносить текст в расширение
28 mikecool
 
23.05.17
17:47
+27 тем самым в расширении нет "мусора"
у самого сейчас хламу полно - за формой потянулось
29 AlvlSpb
 
23.05.17
18:03
(27) В динамичекий список не даст вставить неверный запрос как ни старайся. В параметры вывести Объект.Поле - не даст без этого поля и связанного с ним справочника и т.д.
30 TomWaits
 
24.05.17
08:53
(26) Разница в скорости есть, по консоли запроса - 0,8сек против 2,4сек
2 + 2 = 3.9999999999999999999999999999999...