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

Автор Тема: Помогите разобраться с запросом!!!  (Прочитано 2010 раз)

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

Оффлайн andryscha92

  • ****
  • Сообщений: 267
  • РЕПУТАЦИЯ: 4
  • КПД: 1%
  • Регистрация: 2012-01-31
  • Сайт: 
  • Профессия: Программист 1С

Всем здравствуйте!Такая проблемка, нужно что бы при выборе забалансового счета 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

  • *****
  • Сообщений: 678
  • РЕПУТАЦИЯ: 142
  • КПД: 21%
  • Регистрация: 2012-12-10
    • Skype: artfa.a
  • Компания: Фрилансер
  • Профессия: Программист 8.1
не проще выбирать остатки по счету запросом и загружать в ТЧ документа?

Оффлайн andryscha92

  • ****
  • Сообщений: 267
  • РЕПУТАЦИЯ: 4
  • КПД: 1%
  • Регистрация: 2012-01-31
  • Сайт: 
  • Профессия: Программист 1С
не проще выбирать остатки по счету запросом и загружать в ТЧ документа?
была такая идея, тогда нужно поставить условие чтобы отделить от этих запросов и при выборе определенных счетов загружать в ТЧ документа?
Добавлено: 27 Ноя 2013, 09:32

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

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

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

Последний раз редактировалось: andryscha92; 27 Ноя 2013, 09:32. Причина: Объединение сообщений


Теги:
 

Помогите срочно!! В вкладке "Сервис"--> "Журнал регистрации" отражаются все операции как можно определить сделаны ли операции "задним числом" и как вычислить первоначальную информацию какой расчет поменял на другой?

Автор 2ronРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 4293
Последний ответ 24 Дек 2015, 15:34
от дфтын
Помогите подобрать Back-office и Front-office

Автор avrnskРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 5553
Последний ответ 07 Сен 2010, 12:01
от mohock
Помогите с отчётами в УТ 10.3. (Ведомость по товарам и ведомость по заказам)

Автор chum710Раздел Пользователям "1С - Предприятие 8"

Ответов: 2
Просмотров: 5891
Последний ответ 28 Мар 2012, 13:02
от chum710
Помогите с отчетом "Валовая прибыль"

Автор Dm109Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 4373
Последний ответ 10 Сен 2015, 13:57
от Dm109
помогите с отчетом "характеристики контрагентов"

Автор Vasya PovarРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 1980
Последний ответ 07 Дек 2016, 15:53
от Kironten

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
184 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
50 Сообщений
andron81_81
40 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
29 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 330
  • Точка Скрытых: 0
  • Точка Пользователей: 6
  • Точка Сейчас на форуме:

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal