Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
17 Дек 2017, 07:13
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Связать справочник и регистр накопления  (Прочитано 6116 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн szhutov

  • *
  • Сообщений: 9
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-11-09
  • Сайт: 
  • Профессия: Бухгалтер
Проблема такая:

Имееются: Справочник "Номенклатура" с реквизитами "Количество", "Цена"

                   Документ "Расходная накладная" с реквизитами "Получатель", "Склад". Табличные                 данные "Материалы" с реквизитами "Номенклатура", "ЕдИзмерения", "Количество", "Цена", "Сумма".

                  Регистр накопления "ОстаткиМатериалов" с измерениями "Материал", "Склад" и ресурсами "Сумма", "Количество"

При заполнении документа "Расходная накладная" при выборе "номенклатуры" нужно, чтобы здесь же (справочник "Номенклатура" форма выбора) были видны ее остатки.

Написал вот такую бодягу (программирую первый месяц :xfbnsdfb: )

Процедура СправочникСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    // Вставить содержимое обработчика.
        Если Не ДанныеСтроки.ЭтоГруппа тогда
            ОтборНоменклатуры=Новый Структура;
            ОтборНоменклатуры.Вставить("Номенклатура",ДанныеСтроки.Ссылка);
            ОформлениеСтроки.Ячейки.Остаток.ОтображатьТекст=Истина;
            АктуальныеОстатки=РегистрыНакопления.ПолучитьПоследнее(,ОтборНоменклатуры).Количество;
            ОформлениеСтроки.Ячейки.Остаток.Текст=АктуальныеОстатки;
        КонецЕсли;


КонецПроцедуры

Выскакивает вот такое сообщение:

{Справочник.Номенклатура.Форма.ФормаВыбора(8)}: Метод объекта не обнаружен (ПолучитьПоследнее)
            АктуальныеОстатки=РегистрыНакопления.ПолучитьПоследнее(,ОтборНоменклатуры).Количество;


Второй день вожусь с этой проблемой!

Помогите, пожалуйста!!!

Заранее спасибо.






Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
остатки выводятся в отдельной колонке по каждой номенклатуре?
если да, лучше используйте событие ПриПолученииДанных, а не ПриВыводеСтроки. Разница в количестве раз срабатывания события.
Сами данные получайте запросом и выводите куда следует.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Метод объекта не обнаружен
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн szhutov

  • *
  • Сообщений: 9
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-11-09
  • Сайт: 
  • Профессия: Бухгалтер
остатки выводятся в отдельной колонке по каждой номенклатуре?
если да, лучше используйте событие ПриПолученииДанных, а не ПриВыводеСтроки. Разница в количестве раз срабатывания события.
Сами данные получайте запросом и выводите куда следует.

Да, я в ручную добавил в справочник колонку "Остатки".
Я в запросах пока еще плохо разбираюсь, даже с конструктором. По этому хотел попроще все это организовать. Конфигурация простенькая (для небольшого склада), самописная.

Добавлено: 09 Ноя 2012, 13:12

Метод объекта не обнаружен
Пробовал со многими методами, в частности "Остатки". Или ни чего не получается или выводится не понятно что.

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
Я в запросах пока еще плохо разбираюсь, даже с конструктором. По этому хотел попроще все это организовать.
лучше разберитесь с запросами.
Пробовал со многими методами, в частности "Остатки".
пробовать все подряд смысла нет. используйте синтаксис-помощник, там видно, какие есть методы у объекта, а каких нет.
Или ни чего не получается или выводится не понятно что.
опять же синтаксис-помощник в помощь.
Конфигурация простенькая (для небольшого склада), самописная.
выкладывайте конфигурацию сюда - посмотрим

Оффлайн szhutov

  • *
  • Сообщений: 9
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-11-09
  • Сайт: 
  • Профессия: Бухгалтер
Вот конфигурация. В ней только расход производится не "Расходной накладной" (написал для простоты), а "ЛЗК".
Заранее Спасибо!
А с запросами я обязательно разберусь!:)

Добавлено: 09 Ноя 2012, 13:37

Платформа 8.1.10.50

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Можно вот так, но наверное это не оптимально...

(Для большого справочника НОМЕНКЛАТУРЫ будет заметное замедление работы по получению остатков)
Добавлено: 09 Ноя 2012, 20:45

В основном (если номенклатура разбита по группам) для больших справочников делают получение остатков при активизации строки (Группы) и для этой группы получаются остатки... т.е. не для всей номенклатуры, а только для группы которую открыл пользователь...
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
эх, Dethmontt, опередил меня )) пока я собирался посмотреть, уже сделал.
вопрос (с целью повышения образованности :)): а что такое ДополнительныеПараметры? Некий признак, который надо задавать перед вызовом формы? Типа когда он указан, получаем итоги, а когда нет - не получаем. Такая цель?
Добавлено: 09 Ноя 2012, 23:34

с ДополнительныеПараметры разобрался) не досмотрел весь код сначала. в общем вопрос более не актуален )

Последний раз редактировалось: mixqn; 09 Ноя 2012, 23:35

Оффлайн mixqn

  • Администратор
  • *****
  • Сообщений: 1346
  • РЕПУТАЦИЯ: 166
  • КПД: 12%
  • Who is John Galt?
  • Регистрация: 2012-08-15
  • Сайт: 3gmaster.net
  • Профессия: Программист 1С
по поводу оптимальности... я думал сразу запрос делать с отбором по списку номенклатуры (тому, который выводится в форму) - в этом случае от размера справочника зависеть не должно, а значит и работать должно более-менее быстро. в этом случае код может выглядеть так:
Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)

Если ДополнительныеПараметры = Неопределено Тогда
Возврат;
КонецЕсли;

МассивСсылок = Новый Массив;
Для каждого ОформлениеСтроки Из ОформленияСтрок Цикл
МассивСсылок.Добавить(ОформлениеСтроки.ДанныеСтроки.Ссылка);
КонецЦикла;

Запрос = Новый Запрос("ВЫБРАТЬ
                      | СУММА(ОстаткиМатериаловОстатки.СуммаОстаток) КАК СуммаОстаток,
                      | СУММА(ОстаткиМатериаловОстатки.КоличествоОстаток) КАК КоличествоОстаток,
                      | ОстаткиМатериаловОстатки.Материал КАК Номенклатура
                      |ИЗ
                      | РегистрНакопления.ОстаткиМатериалов.Остатки(
                      | &ДатаДокумента,
                      | Склад = &Склад
                      | И Материал В (&МассивСсылок)) КАК ОстаткиМатериаловОстатки
                      |
                      |СГРУППИРОВАТЬ ПО
                      | ОстаткиМатериаловОстатки.Материал");
 
Запрос.УстановитьПараметр("ДатаДокумента",ДополнительныеПараметры.Дата);
Запрос.УстановитьПараметр("Склад",ДополнительныеПараметры.Склад);
Запрос.УстановитьПараметр("МассивСсылок", МассивСсылок);

Результат = Запрос.Выполнить().Выгрузить();

Для Каждого СтрОф Из ОформленияСтрок Цикл
СтрокаТЗ = Результат.Найти(СтрОф.ДанныеСтроки.Ссылка,"Номенклатура");
Если СтрокаТЗ = Неопределено Тогда
Продолжить;
КонецЕсли;
СтрОф.Ячейки.СуммаОстаток.Значение = СтрокаТЗ.СуммаОстаток;
СтрОф.Ячейки.КоличествоОстаток.Значение = СтрокаТЗ.КоличествоОстаток;
КонецЦикла;

КонецПроцедуры

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Ну это если устанавливать отбор при открытии формы выбора.

P.S. Я по началу так и сделал, но почему-то удалил.....
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
145 Сообщений
ilyay ilyay
63 Сообщений
AIFrame
50 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
42 Сообщений
BuhRust
32 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 118
  • Точка Скрытых: 0
  • Точка Пользователей: 0

Нет пользователей онлайн.

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal