Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Получить ключ субконто
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Agapov_Stas
Конфигурация "Бухгалтерский учет для Украины" Ред 1.2
Есть запрос - срез остатков на дату Стандартный запрос по Организации и Счету
Для того чтоб занести из результатов запроса в проводку - необходимо знать ключ Субконто

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

Потом
Для Каждого СТР ИЗ Результат Цикл 
    Движение = ЭлементыФормы.ТабличноеПолеДвиженияБУ.Значение.Добавить();
                
    Ключ = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Подразделения;
    
    Движение.СубконтоДТ[Ключ] = Стр.СубконтоДТ1;
    
КонецЦикла;

Вопрос - Как получить КЛЮЧ универсально ?
Так как счет по которому будет делаться срез разный.
MATEVI
Движение = ЭлементыФормы.ТабличноеПолеДвиженияБУ.Значение.Добавить(); 
Движение .СчетДт      = СтрокаТаблицы.СчетДТ;
БухгалтерскийУчет.УстановитьСубконто(Движение .СчетДт,Движение.СубконтоДт1,0, СТР.СубконтоДт1 ,Истина, Заголовок);

Думаю так. Возможно напутал с Вашими переменными. Вообщем смотрите БухгалтерскийУчет.УстановитьСубконто(
Agapov_Stas
заполняю данные в Таблицу РегистрБухгалтерииНаборЗаписей.Хозрасчетный! не формирую проводки еще
в Данной таблице Колонка СубконтоДТ имеет тип "ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные"
Соответственно чтоб установить туда значение нужно знать какой вид субконто.
В результате запроса возвращается значение уже субконто - получить тип - Возвращается значение Справочник такой то или документ такой то НО не
к примеру ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура
Чтоб установить СубконтоДТ
Ключ = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Подразделения; 
    
Движение.СубконтоДТ[Ключ] = Стр.СубконтоДТ1;


Значение Стр.СубконтоДТ1
ТИП = СправочникСсылка.ПодразделенияОрганизации
Значение = Ссылка на подразделение
Соответственно записывать его я должен в

Движение.СубконтоДТ[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Подразделения] = Стр.СубконтоДТ1;


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

Как из Стр.СубконтоДТ1 Получить ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Подразделения ?
MATEVI
А почему не сделать просто
ЭлементыФормы.ТабличноеПолеДвиженияБУ.Значение = Результат;
ЭлементыФормы.ТабличноеПолеДвиженияБУ.СоздатьКолонки();

И получите готовую таблицу значений.
Agapov_Stas
Цитата(MATEVI @ 23.02.12, 14:20) необходимо зарегистрироваться для просмотра ссылки
А почему не сделать просто
ЭлементыФормы.ТабличноеПолеДвиженияБУ.Значение = Результат;
ЭлементыФормы.ТабличноеПолеДвиженияБУ.СоздатьКолонки();

И получите готовую таблицу значений.

Потому что гружу в табличную часть РегистрБухгалтерииНаборЗаписей.Хозрасчетный
на основании него буду делать проводки
и необходимо знать тип
Делаю примерно как документ "Корректировка записей регистра" - это документ сторнирования
Делаю документ который будет обнулять минусовые остатки на выбранную дату поэтому такая табличная часть
MATEVI
bn.gif

Agapov_Stas
Спасибо - буду пробовать. Уже ушел с работы )
Пошел чуть другим путем вроде заработало - завтра отпишусь, если интересно, как обошел это...
MATEVI
Если СТР.СчетДТ.ВидыСубконто.Количество()>0 Тогда                
        Движение.СубконтоДт.Вставить(СТР.СчетДТ.ВидыСубконто[0].ВидСубконто,СТР.СубконтоДт1);    
КонецЕсли;

Или вот такой велик.
Vofka
Цитата(Agapov_Stas @ 23.02.12, 23:32) необходимо зарегистрироваться для просмотра ссылки
Уже ушел с работы )

В смысле уволился? haha.gif

Цитата(Agapov_Stas @ 23.02.12, 19:39) необходимо зарегистрироваться для просмотра ссылки
завтра отпишусь, если интересно, как обошел это...

По правилам хорошего тона... smile.gif
Agapov_Stas
Мой велосипед выглядит так:

Для Каждого ТекСтрокаТабЧасть Из Результат Цикл
     //Текст кода
     Движение = Движения.Хозрасчетный.Добавить();
     Н =1;
     Для Каждого СУб ИЗ Счет.ВидыСубконто ЦИкл
                Если Н = 1 Тогда
                    Движение.СубконтоДт[Суб.ВидСубконто] = ТекСтрокаТабЧасть.СубконтоДТ1;
                ИначеЕсли Н = 2 Тогда
                    Движение.СубконтоДт[Суб.ВидСубконто] = ТекСтрокаТабЧасть.СубконтоДТ2;
                ИначеЕсли Н =3 Тогда
                    Движение.СубконтоДт[Суб.ВидСубконто] = ТекСтрокаТабЧасть.СубконтоДТ3;
                КонецЕсли;
                    Н = Н+1;
       КонецЦикла;
       //ЕЩе текст кода
КонецЦикла;


Как то так )
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.