Имя: Пароль:
1C
1С v8
сравнение субконто счетов
0 CTmuB
 
02.02.12
18:05
ВидыСубконто1 = Счет1.ВидыСубконто;
ВидыСубконто2 = Счет2.ВидыСубконто;
Для Каждого ВидСубконто1 Из ВидыСубконто1 Цикл
   Отбор.Вставить("ВидСубконто",ВидСубконто1.ВидСубконто);
   Строки = ВидыСубконто2.НайтиСтроки(Отбор);
   Если Строки.Количество() = 0 Тогда
       Сообщить("Не найдено");
1 CTmuB
 
02.02.12
18:06
даный блок постоянно попадает в "не найдено" даже для одинаковых счетов
2 НикДляЗапросов
 
02.02.12
18:07
непонятно
3 CTmuB
 
02.02.12
18:07
проблемма в
Строки = ВидыСубконто2.НайтиСтроки(Отбор);
не находит ни одной строки

подскажите где у меня грабли?
4 CTmuB
 
02.02.12
18:08
хочу сравнить два счета на "одинаковость" их субконто
5 Mort
 
02.02.12
18:47
Выбери в качестве счета1 счет без субконто. Будет зато всегда работать.
6 timurhv
 
02.02.12
19:58
Счет.ВидыСубконто.Выгрузить() - получишь таблицу значений, а дальше уже не составит проблем думаю :)
7 Dmitrii
 
гуру
02.02.12
20:18
Может что-то типа этого:

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

Пример не учитывает всяческие признаки учета субконто (на одном счете по субконто межт вестись количественный учет, а на другом - по тому же субконто - нет) и порядок следования субконто на счетах.
8 Dmitrii
 
гуру
02.02.12
20:35
Запрос может лучше такой...

Запрос.Текст =
"ВЫБРАТЬ
|  СУММА(1) КАК Поле1
|ИЗ
|  ПланСчетов.Хозрасчетный.ВидыСубконто КАК ХозрасчетныйВидыСубконто
|ГДЕ
|  ХозрасчетныйВидыСубконто.Ссылка В (&Счет1, &Счет2)
|СГРУППИРОВАТЬ ПО
|  ХозрасчетныйВидыСубконто.ВидСубконто
|ИМЕЮЩИЕ
|  СУММА(1) < 2";

Только он будет некорректно работать если на одном счете есть два одинаковых субконто, например, Субконто1 - Номенклатура и Субконто3 - Номенклатура.
9 timurhv
 
02.02.12
20:51
На одном счете не может быть два одинаковых видо субконто - начнет ругаться
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс