Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 15:59

Помогите разобраться с запросом!!!

Автор andryscha92, 26 ноя 2013, 21:01

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

andryscha92


Всем здравствуйте!Такая проблемка, нужно что бы при выборе забалансового счета 26.31 заполнялась табличная часть автоматически(рисунок 2). Сейчас это работает для других счетов(рисунок1).Можно как то добавить туда ещё счета для автоматического заполнения? Вот программный код этого события(Рисунок 3)ниже код.Подскажите пожалуйста незнаю что делать!Добавлял для нового счета третье субконто так что и на других счетах(Контрагенты,ОС,ЦМА) всё равно не работает.И в массив(ниже в коде) добавлял счет чудом раз сработало один раз и перестало теперь навсегда!!!





[/code]Процедура КоманднаяПанель1ДействиеЗаполнитьПоБУ(Кнопка)


Если НЕ ЗначениеЗаполнено(ЦМО) Тогда
Предупреждение("Заполните реквизит ""МОЛ/Подразделение""");
Возврат;
КонецЕсли;

Если ЭтоНовый() Тогда
Ответ = Вопрос("Перед заполнением документ слеудет записать. Записать?", РежимДиалогаВопрос.ДаНет, 60);
Если Ответ <> КодВозвратаДиалога.Да ТОгда
Возврат;
КонецЕсли;
ЗаписатьВФорме(РежимЗаписиДокумента.Запись);
КонецЕсли;
[font=arial][u][size=medium][color=red]ЗаполнитьДокументПоБУ();[/font][/u][/size][/color]
УправлениеДиалогом();
КонецПроцедуры





Процедура ЗаполнитьДокументПоБУ() Экспорт
Остатки.Очистить();
Инвентаризация.Очистить();
Недостачи.Очистить();
Излишки.Очистить();

[color=red][size=medium]ТаблицаОстатков = ПолучитьОстатки();[/color][/size]
[color=red][size=medium]
[/color][/size]
Если ТаблицаОстатков = Неопределено Тогда
Возврат;
КонецЕсли;

ПеренестиОстаткиВТабличнуюЧастьОстатки(Остатки, ТаблицаОстатков);
ЗаполнитьТаблицуИнвентаризации();
ЗаполнитьТаблицуНастроек(ТаблицаОстатков);
КонецПроцедуры



Функция ПолучитьОстатки()
Перем НомерОС, НомерЦМО, НомерДопСубконто;

НомерОС           = ?(мСтруктураСубконтоСчета.Свойство("ОС", НомерОС),НомерОС,Неопределено);
НомерЦМО          = ?(мСтруктураСубконтоСчета.Свойство("ЦМО", НомерЦМО),НомерЦМО,Неопределено);
НомерДопСубконто  = ?(мСтруктураСубконтоСчета.Свойство("ДопСубконто", НомерДопСубконто),НомерДопСубконто,Неопределено);

Если НомерОС = Неопределено ИЛИ НомерЦМО = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;

Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ДатаЗапроса",     МоментВремени());
Запрос.УстановитьПараметр("Учреждение",      Учреждение);
Запрос.УстановитьПараметр("ТекСчет",         НомерСчета);
Запрос.УстановитьПараметр("ЦМО",             МассивЦМО);
Запрос.УстановитьПараметр("МассивСостояний", [color=red][size=small]ПолучитьЛокальнуюПеременную("МассивИсключаемыхСостояний")[/color][/size]);

ТекстУсловия = "Учреждение = &Учреждение И Субконто" + НомерЦМО + " В (&ЦМО)";
Если НомерДопСубконто <> Неопределено Тогда
Если ЗначениеЗаполнено(СубконтоСчет) Тогда
ТекстУсловия = ТекстУсловия + " И Субконто" + НомерДопСубконто + " = &ДопСубконто ";
Запрос.УстановитьПараметр("ДопСубконто", СубконтоСчет);
КонецЕсли;
КонецЕсли;

// Сформируем условие для отбора по балансу
ТекстУсловия = ТекстУсловия + "
   | И ВЫБОР
   | КОГДА &БалансОтбор = НЕОПРЕДЕЛЕНО
   | ТОГДА ИСТИНА
   | ИНАЧЕ Баланс = &БалансОтбор
   | КОНЕЦ";
Запрос.УстановитьПараметр("БалансОтбор", ?(НЕ УчитыватьБаланс,Неопределено,БалансОтбор));

ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЕПСБУОстатки.Баланс,
| ЕПСБУОстатки.КВД,
| ЕПСБУОстатки.Счет,
| ЕПСБУОстатки.Субконто" + НомерОС + " КАК ОС,
| ВЫРАЗИТЬ(ЕПСБУОстатки.Субконто" + НомерОС + " КАК Справочник.ОсновныеСредства).Наименование КАК ОСПредставление,
| ВЫРАЗИТЬ(ЕПСБУОстатки.Субконто" + НомерОС + " КАК Справочник.ОсновныеСредства).ГрупповойУчет КАК ГрупповойУчет,
| ЕПСБУОстатки.Субконто" + НомерЦМО + " КАК ЦМО,
| ЕПСБУОстатки.Субконто" + НомерЦМО + ".Код КАК ЦМОКод,
| ЕПСБУОстатки.Субконто" + НомерЦМО + ".Наименование КАК ЦМОПредставление,
| ЕПСБУОстатки.КоличествоОстаток КАК КоличествоБУ,
| ЕПСБУОстатки.СуммаОстаток КАК СтоимостьБалансовая,
| ЕПСБУОстатки.Счет.Код КАК СчетКод,
| ПРЕДСТАВЛЕНИЕ(ЕПСБУОстатки.КВД) КАК КВДПредставление,
| ЕПСБУОстатки.Баланс.Код КАК БалансКод,
| ВЫРАЗИТЬ("""" КАК СТРОКА(200)) КАК Ключ
|ИЗ
| РегистрБухгалтерии.ЕПСБУ.Остатки(&ДатаЗапроса, Счет.Ссылка В ИЕРАРХИИ (&ТекСчет), , " + ТекстУсловия + ") КАК ЕПСБУОстатки
|ГДЕ
| ЕПСБУОстатки.КоличествоОстаток <> 0
|
|ИТОГИ ПО
| ОС,
| ЦМО
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| МестонахождениеОССрезПоследних.ОС КАК ОС,
| МестонахождениеОССрезПоследних.ИнвНомер,
| МестонахождениеОССрезПоследних.ЦМО,
| ЛОЖЬ КАК ЕстьОстаток,
| ВЫРАЗИТЬ("""" КАК СТРОКА(200)) КАК Ключ
|ИЗ
| РегистрСведений.МестонахождениеОС.СрезПоследних(&ДатаЗапроса, Учреждение = &Учреждение) КАК МестонахождениеОССрезПоследних
|ГДЕ
| МестонахождениеОССрезПоследних.ЦМО В (&ЦМО)
| И (НЕ МестонахождениеОССрезПоследних.Состояние В (&МассивСостояний))
|ИТОГИ ПО
| ОС";

Запрос.Текст      = ТекстЗапроса;
МассивРезультатов = Запрос.ВыполнитьПакет();
ДеревоОстатков    = МассивРезультатов[0].Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
ДеревоИнвНомеров  = МассивРезультатов[1].Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);

ТаблицаОстатков = СформироваТаблицуОстатков(ДеревоОстатков, ДеревоИнвНомеров);
ТаблицаОстатков.Сортировать("ОСПредставление");

Возврат ТаблицаОстатков;
КонецФункции







Функция ПолучитьЛокальнуюПеременную(ИмяПеременной) Экспорт
Результат = "";
Если НЕ ДополнительныеСвойства.Свойство(ИмяПеременной,Результат) Тогда
Если ИмяПеременной = "ТаблицаСчетов" Тогда
МассивКодов = Новый Массив;
МассивКодов.Добавить("01");
МассивКодов.Добавить("01.11");
МассивКодов.Добавить("01.12");
МассивКодов.Добавить("01.21");
МассивКодов.Добавить("01.22"); //В этот массив я добавлял нужный счет чудом один раз сработало
МассивКодов.Добавить("01.31"); //и теперь всё перестало работать навечно!!!это не прокатывает!
МассивКодов.Добавить("01.32");
МассивКодов.Добавить("02.1");
МассивКодов.Добавить("22.1");
Результат = УправлениеМатериальнымиЗапасами.ПолучитьТаблицуЗабалансовыхСчетов(МассивКодов);
ИначеЕсли ИмяПеременной = "ПВХ_ЦМО" Тогда
Результат = ПланыВидовХарактеристик.ВидыСубконтоБюджет.ЦМО;
ИначеЕсли ИмяПеременной = "ПВХ_ОС" Тогда
Результат = ПланыВидовХарактеристик.ВидыСубконтоБюджет.ОсновныеСредства;
ИначеЕсли ИмяПеременной = "МассивКВД" Тогда
Результат = Новый Массив;
Результат.Добавить(Перечисления.КВД.Бюджет);
Результат.Добавить(Перечисления.КВД.Внебюджет);
Результат.Добавить(Перечисления.КВД.СубсидииНаГосзадание);
Результат.Добавить(Перечисления.КВД.СубсидииНаИныеЦели);
Результат.Добавить(Перечисления.КВД.БюджетныеИнвестиции);
Результат.Добавить(Перечисления.КВД.СредстваОМС);
ИначеЕсли ИмяПеременной = "МассивИсключаемыхСостояний" Тогда
Результат = Новый Массив;
Результат.Добавить(Перечисления.СостоянияОС.ПустаяСсылка());
Результат.Добавить(Перечисления.СостоянияОС.СнятоСУчета);
ИначеЕсли ИмяПеременной = "СписокВидовУчета" Тогда
СпВидовУчета = Новый СписокЗначений;
СпВидовУчета.Добавить(Перечисления.ВидыУчетаНФА.Арендованные,"Основные средства в пользовании");
СпВидовУчета.Добавить(Перечисления.ВидыУчетаНФА.НаОтветственномХранении,"На ответственном хранении");
СпВидовУчета.Добавить(Перечисления.ВидыУчетаНФА.НаБалансе,"Полученные по централизованному снабжению");
Результат = СпВидовУчета;
ИначеЕсли ИмяПеременной = "СписокБалансов" Тогда
Результат = УправлениеМатериальнымиЗапасами.СформироватьСписокБалансовДляВыбора();
КонецЕсли;
ДополнительныеСвойства.Вставить(ИмяПеременной,Результат);
КонецЕсли;

Возврат Результат;
КонецФункции










Besart

не проще выбирать остатки по счету запросом и загружать в ТЧ документа?

andryscha92

Цитата: Besart от 26 ноя 2013, 21:39
не проще выбирать остатки по счету запросом и загружать в ТЧ документа?
была такая идея, тогда нужно поставить условие чтобы отделить от этих запросов и при выборе определенных счетов загружать в ТЧ документа?
Добавлено: 27 ноя 2013, 09:32


Цитата: Besart от 26 ноя 2013, 21:39
не проще выбирать остатки по счету запросом и загружать в ТЧ документа?
спасибо,воспользовался вашим способом!
Добавлено: 27 ноя 2013, 09:32


Цитата: andryscha92 от 26 ноя 2013, 21:56
Цитата: Besart от 26 ноя 2013, 21:39
не проще выбирать остатки по счету запросом и загружать в ТЧ документа?
была такая идея, тогда нужно поставить условие чтобы отделить от этих запросов и при выборе определенных счетов загружать в ТЧ документа?
Добавлено: 27 ноя 2013, 09:32


Цитата: Besart от 26 ноя 2013, 21:39
не проще выбирать остатки по счету запросом и загружать в ТЧ документа?
спасибо,воспользовался вашим способом!
проблема решена!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск