Вопрос № 101617: Уважаемые эксперты,три года работаем с Бухгалтерией 7.7 (сильно переделанной под себя). Возможно через год купим 8-ку. Есть ли смысл переписывать пока свои программы под 8.0(есть ее учебная версия), если будем покупать 8.1. Cильно ли они отличаются п...Вопрос № 101626: Здравствуйте, у меня такой вопрос как в 1С реализовать такой метод учета:
1. Есть счетчики у них есть начальные и конечные показания как сделать чтобы начальные и конечные показания можно было посмотреть за определенный период.
Заранее С...Вопрос № 101628: Доброе время суток, уважаемые эксперты. Подскажите, может есть решение следующего вопроса. Есть 1С 7.7, база dbf, УРИБ, сервер терминалов. Примерно 20 одновременно работающих пользователей. Периодически (довольно часто) выскакивает сообщение "Ож...Вопрос № 101634: Здравствуйте! Подскажите, пожалуйста сов7 зеленому новичку решение проблемы. В обработку документов нужно добавить "В
Начало Дня" и "В Конец Дня". Метод "УстановитьВремя" требует фиксированного времени. Автовремя не дает...Вопрос № 101690: Не могу написать отчёт для Типовой 1С Бухгалтерии.
Задача: В строительной организации ведётся учет материалов с прикреплением каждого прораба к складу.
Необходимо выбать склад и проследить все движения по ним по остальным складам
Типа При...
Вопрос № 101.617
Уважаемые эксперты,три года работаем с Бухгалтерией 7.7 (сильно переделанной под себя). Возможно через год купим 8-ку. Есть ли смысл переписывать пока свои программы под 8.0(есть ее учебная версия), если будем покупать 8.1. Cильно ли они отличаются по языку ? Есть ли конвертор программ из 8.0 в 8.1?
Отвечает: Яна
Здравствуйте, Щукина Татьяна Афанасьевна!
8.1 - расширенный вариант 8.0. Все типовые под 8.0 запускаются на 8.1. Конвертация не требуется. Языки очень похожи, почти совпадают, в 8.1 больше возможностей. Перед тем, как переписывать стоит исследовать текущую типовую - возможно, она Вам подойдет без переписывания. В 8.0 типовые ЗНАЧИТЕЛЬНО функциональнее, чем в 7.7.
Кроме того, стоит узнать планы 1С по разработке дополнительного функционала в типовой, возможно, через год уже все Вам необходимое в ней будет.
Ответ отправила: Яна (статус: Студент)
Ответ отправлен: 11.09.2007, 10:27 Оценка за ответ: 5 Комментарий оценки: БОЛЬШОЕ СПАСИБО
Отвечает: Андрей Тимофеев
Здравствуйте, Щукина Татьяна Афанасьевна!
По языку они не отличаются совсем, единственное, что в 8.1 добавлены некоторые конструкции языка.
Конвертора нет, т.к. он не нужен, 1с сама поймет, что вы загружаете в 8.1 базу из 8.0 и сама все сделает за Вас.
А смысла переписывать может быть и нету, потому как в 8-ке намного шире функциональность чем в 7-ке и то, что вы писали уже попросто может присутствовать в базовой конфе.
Удачи!
Ответ отправил: Андрей Тимофеев (статус: 7-ой класс)
Ответ отправлен: 11.09.2007, 15:00 Оценка за ответ: 5 Комментарий оценки: СПАСИБО
Вопрос № 101.626
Здравствуйте, у меня такой вопрос как в 1С реализовать такой метод учета:
1. Есть счетчики у них есть начальные и конечные показания как сделать чтобы начальные и конечные показания можно было посмотреть за определенный период.
Заранее Спасибо!
Отправлен: 11.09.2007, 11:19
Вопрос задал: Diamondes (статус: Посетитель)
Всего ответов: 7 Мини-форум вопроса >>> (сообщений: 6)
Отвечает: Никифоров Иван Петрович
Здравствуйте, Diamondes!
Создать РегистрНакопления , в которым будут записываться движения по счетчику, данные из регистра выбирать запросом...
Ответ отправил: Никифоров Иван Петрович (статус: 1-ый класс)
Ответ отправлен: 11.09.2007, 11:24 Оценка за ответ: 3 Комментарий оценки: В 1С 7.7 Это не работает
Отвечает: Андрей Тимофеев
Здравствуйте, Diamondes!
Я бы сделал в воде подчиненного справочника и каждые показания хранил бы в виде отдельной записи.
Удачи.
Ответ отправил: Андрей Тимофеев (статус: 7-ой класс)
Ответ отправлен: 11.09.2007, 11:27 Оценка за ответ: 3 Комментарий оценки: Вариант не совсем понятен
Отвечает: Vlad Skorochod
Здравствуйте, Diamondes!
Самый простой вариант:
Создаем документ. В шапке три поля:
Счетчик - Справочник счетчиков,
НачПоказание - Число
КонПоказание - Число
Потом любым запросом или простым перебором. Выбираем все что надо.
Ответ отправил: Vlad Skorochod (статус: 7-ой класс)
Ответ отправлен: 11.09.2007, 11:36 Оценка за ответ: 4 Комментарий оценки: Хорошо но слишком както громоздко получается
Отвечает: Elric
Здравствуйте, Diamondes!
Для 1С версии 7.7.
Если счетчиков в принципе может быть несколько, то рекомендую создать справочник счетчиков. Начальный и конечный показатель -- периодические реквизиты справочника. Рекомендую также создать специальный документ, которым будут вводиться показания счетчиков и запретить ввод этих реквизитов вручную -- это повысит надежность системы не ущемляя удобств пользования. Историю значений можно будет просмотреть либо непосредственно в справочнике, либо написать красивый отчетик -- тогда доступ к данным за произвольный период
будет через переменную типа "Периодический".
Предложенный ранее метод с подчиненными справочниками -- слишком громоздкий, хоть в принципе адекватный. Метод с документом тоже адекватен, но также будет много возни. Метод с регистром накопления -- это для 1С 8.0.
--------- В творчестве рождается истина
Ответ отправил: Elric (статус: Специалист)
Ответ отправлен: 11.09.2007, 14:17 Оценка за ответ: 5 Комментарий оценки: Спасибо! В принципе я так и думал
Отвечает: Игорь К.
Здравствуйте, Diamondes!
Создаете Справочник.Счетчики, где будут храниться наименования счетчиков.
Создаете Регистр.ДвиженияСчетчиков - регистр остатков, где будут вестись показания за период.
Измерения - "Счетчик" - тип Справочник.Счетчики;
Ресурсы - "Показания" - тип Число.
Создаете Документ.ДвиженияСчетчиков с полями в табличной части:
1) "Счетчик" - тип Справочник.Счетчики;
2) "ТекПоказания" тип "Число".
В обработке проведения этого документа пишете:
рег=СоздатьОбъект("Регистр.ДвиженияСчетчиков");
рег.ВременныйРасчет();
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
рег.Регистр.ДвиженияСчетчиков.Счетчик=Счетчик; //поле табличной части
рег.ОстаткиПолучить();
Регистр.ДвиженияСчетчиков.Счетчик=Счетчик; //поле табличной части документа
Регистр.ДвиженияСчетчиков.Показания=ТекПоказания-рег.Показания; //получаем изменение показаний счетчика
Регистр.ДвиженияСчетчиков.ДвижениеПриходВыполнить();
КонецЦикла;
Ну а потом нужен отчет где выбирается период и конкретный счетчик или все сразу.
Удачи!
--------- Лучше два часа потерять, потом за пять минут долететь
Ответ отправил: Игорь К. (статус: 5-ый класс)
Ответ отправлен: 11.09.2007, 14:25
Отвечает: Владимир (1С)
Здравствуйте, Diamondes!
1-й способ: организовать справочник с периодическими реквизитами и записывать в них показания счетчиков. Потом программно можно выбрать историю значений за определенный период.
2-й способ: документом. Запросом или перебором прочитать из документа значения счетчиков.
3-й способ: в документ записывать разницу между показаниями счетчиков, каждая строка соответствует родному счетчику, делать движениек про регистрам остатков В регистре потом посмотреть "движения" счетчиков и проанализировать информацию.
С уважением, Владимир.
Ответ отправил: Владимир (1С) (статус: 3-ий класс)
Ответ отправлен: 12.09.2007, 00:12
Отвечает: Ромашов Евгений Николаевич
Здравствуйте, Diamondes!
есть стандартные группировки год, квартал, месяц, день
а как хранить их это вопрос организации базы данных
Доброе время суток, уважаемые эксперты. Подскажите, может есть решение следующего вопроса. Есть 1С 7.7, база dbf, УРИБ, сервер терминалов. Примерно 20 одновременно работающих пользователей. Периодически (довольно часто) выскакивает сообщение "Ожидание захвата таблицы "Изменения объектов"", далее - "Блокировка таблицы 1SUPDTS...", и как результат - откат транзакции и предложение повторить сохранение. :-(
Отвечает: Андрей Тимофеев
Здравствуйте, Урбанович Виталий C.!
Эта ситуация возникает когда один пользователь сохраняет или проводит(что скорее всего) документ и другой в это время пытается выполнить аналогичные действия, но одновременно записывать они не могут, в следствии чего вы и видете это сообщение.
Скорее всего поможет только обновление сервера, + если 20 пользователей базу необходимо переводить на sql.
Удачи!
Ответ отправил: Андрей Тимофеев (статус: 7-ой класс)
Ответ отправлен: 11.09.2007, 11:53 Оценка за ответ: 3 Комментарий оценки: Спасибо, но только блокировка таблицы 1SUPDTS и, соответственно, откат транзакций чаще всего бывает не при проведении документа, а при сохранении элемента справочника. Здесь, похоже, что-то не то с УРИБ...
Отвечает: Vovchai
Здравствуйте, Урбанович Виталий C.!
попробуйте увеличить время ожидания захвата (сервис-параметры-время ожидания захвата таблиц БД)
Ответ отправил: Vovchai (статус: 4-ый класс)
Ответ отправлен: 11.09.2007, 11:58 Оценка за ответ: 5 Комментарий оценки: Вроде полегчало... )
Отвечает: Яна
Здравствуйте, Урбанович Виталий C.!
Базу нужно в SQL - будет немного легче, но незначительно. Значительно лучше будет, если перейдете на 1С 8.0. Она гораздо лучше работает с SQL. Будет происходить блокировка, но не всей таблицы, а только нескольких строк.
Ответ отправила: Яна (статус: Студент)
Ответ отправлен: 11.09.2007, 13:30 Оценка за ответ: 3 Комментарий оценки: Конфа не "заточена" под SQL, поэтому тормозить будет ещё больше. На 1С 8.0 тоже перейти не могу... :-(
Отвечает: Elric
Здравствуйте, Урбанович Виталий C.!
Как вариант, можно еще попытаться оптимизировать обработку проведения документов так, чтоб основная масса вычислений происходила еще до начала проведения, чтобы сама процедура проведения была как можно короче (по времени исполнения).
Ну, или повысить мощность сервера, чтоб все задачи выполнялись быстрее :)
А вот если на SQL переведете, то система станет более отказоустойчивой, но замедлится раза в два.
--------- В творчестве рождается истина
Ответ отправил: Elric (статус: Специалист)
Ответ отправлен: 11.09.2007, 14:23 Оценка за ответ: 4 Комментарий оценки: Спасибо за 1-ый совет. Надо подумать.Но только блокировка таблицы 1SUPDTS и, соответственно, откат транзакций чаще всего бывает не при проведении документа, а при сохранении элемента справочника. Здесь, похоже, что-то не то с УРИБ...
Отвечает: Владимир (1С)
Здравствуйте, Урбанович Виталий C.!
Да, такое решение есть:
1-й вариант, наиболее простой - в режиме Предприятия меню Сервис - Параметры, на вкладке Общие указать "Время ожидания захвата таблиц..." чуть бОльшим, чем стоИт (в секундах), например, 30 секунд или более - программа будет ждать столько времени, пока не завершится транзакция другим пользователем.
2-й вариант - программный: завести константу (или справочник), в которую при проведении будет записываться пользователь, вызвавший транзакцию. А при вызове процедуры проведения проверка на эту константу:
Процедура ОбработкаПроведения()
Если ПустоеЗначение(Константа.ЗахватТранзакции) = 0 Тогда
Сообщить("Пользователь "+Константа.ЗахватТранзакции+" сейчас проводит документ.");
Иначе
Константа.ЗахватТранзакции = глПользователь;
...
.. действия проведения документа
...
Константа.ЗахватТранзакции = ""; // очистим константу, чтоб другие могли работать
КонецПроцедуры //ОбработкаПроведения
И соответственно, в глобальном модуле при начале работы системы если монопольный вход, очищать эту константу и где-нибудь "рычажок" вручную обнулять константу, если пользователь вышел аварийно.
То же можно сделать и при записи элементов справочников и при записи документов.
Думаю, это не идеальный способ, т.к. пользователю нужно будет ждать и "ловить" очередь, но это лучше аварийного выхода (у нас по сети во время поведения бывает просто аварийно завершается "Программа выполнила недопустимую операцию....").
С уважением, Владимир.
Ответ отправил: Владимир (1С) (статус: 3-ий класс)
Ответ отправлен: 11.09.2007, 15:34 Оценка за ответ: 5 Комментарий оценки: Спасибо за 1-ый вариант
Вопрос № 101.634
Здравствуйте! Подскажите, пожалуйста сов7 зеленому новичку решение проблемы. В обработку документов нужно добавить "В Начало Дня" и "В Конец Дня". Метод "УстановитьВремя" требует фиксированного времени. Автовремя не дает результатов, не сов7 понимаю принцип работы.
Отправлен: 11.09.2007, 13:07
Вопрос задал: Вадимий (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Краюшкин Игорь Валерьевич
Здравствуйте, Вадимий!
В 7.7 можно через:
АвтоВремяНачалоДня()
АвтоВремяКонецДня()
АвтоВремяТекущее()
Кстати, старайтесь на профессиональных форумах обходиться более литературным написанием слов русского языка.
Вам нужно действовать таким способом:
1. Найти первый документ за нужный день (операция в два действия).
2. Получить время этого документа методом ПолучитьВремя().
3. Установить время нового документа за секунду (или две) от полученного времени методом УстановитьВремя().
--------- В творчестве рождается истина
Ответ отправил: Elric (статус: Специалист)
Ответ отправлен: 11.09.2007, 14:32
Отвечает: Владимир (1С)
Здравствуйте, Вадимий!
C помощью этих методов (ПолучитьВремя() и УстановитьВремя()) можно программно управлять временем документа. Методы подробно описаны даже в синтаксис помощнике. Например, можно в общем журнале создать кнопки "Вверх" и "Вниз", которые бы меняли текущий документ с соседним в зависимости от нажатой кнопки. Вот код процедуры, вызываемой по кнопке "Вверх":
Процедура Вверх()
ТекДок=ТекущийДокумент; //получили текущий документ в журнале
Если ТекДок.Выбран()=0 тогда //нет документов
Возврат;
КонецЕсли;
Если ТекДок.Проведен()=1 Тогда //менять время можно тольку у непроведенного документа
Предупреждение("Документ проведен, время можно менять только у непроведенного документа");
Возврат;
КонецЕсли;
//ищем ближайший документ сверху
Док=создатьОбъект("Документ");
Док.ОбратныйПорядок(1); //идем по журналу снизу вверх
Док.ВыбратьДокументы(,ТекДок);
//сначала получаем наш текущий документ
Если Док.ПолучитьДокумент()=0 тогда //документа сверху может и не быть
Возврат;
КонецЕсли;
//теперь получаем тот документ, над которым надо подняться
Если Док.ПолучитьДокумент()=0 тогда
Возврат;
конецЕсли;
ч=0; м=0; с=0;
Док.ПолучитьВремя(ч,м,с); //получаем время найденного документа
//и переводим его в секунды, чтобы отнять 1 секунду
Секунд=с+м*60+ч*3600;//перевели в секунды
НовоеВремя=секунд-1;
//а теперь обратно в часы, минуты и секунды
ч=Цел(НовоеВремя/3600);
м=цел((НовоеВремя-ч*3600)/60);
с=НовоеВремя-ч*3600-м*60;
//менять время можно только у тех докуентов,
//что получены через СоздатьОбъект
Док.НайтиДокумент(ТекДок);
Док.УстановитьВремя(ч,м,с);//устанавливаем время документа
Док.Записать();
КонецПроцедуры
Есть еще схожие по функционалу методы
АвтоВремяНачалоДня();
АвтоВремяКонецДня();
АвтоВремяТекущее();
Один из них записывается в процедуру ВводНового() нужного Вам документа и запись документа автоматически происходит в соответствующее время. При этом надо помнить, что настройки в "Сервис"-"Параметры"- "Запрашивать время..." в данном случае игнорируются и пользователь не увидит диалога о выборе времени. Но в журнале документов время всегда можно будет изменить.
Ответ отправил: Владимир (1С) (статус: 3-ий класс)
Ответ отправлен: 11.09.2007, 15:02
Вопрос № 101.690
Не могу написать отчёт для Типовой 1С Бухгалтерии.
Задача: В строительной организации ведётся учет материалов с прикреплением каждого прораба к складу.
Необходимо выбать склад и проследить все движения по ним по остальным складам
Типа Приход с такихто - складов, Расход с этого склада на такие-то склады (мат отчёт прораба- если официальный).
Выбираю счет - например 10.1 период отчёта - с и по, выбираю склад -
например склад 2
На выходе на до получить таблицу по выбранному складу:
Наим. | Приход с какого склада | Расход на какой склад|
| Склад 1 | Склад 2|...Складn | | Склад 1 | Склад 2|...Складn |
Материал1
Материал 2
...................
В ячейках Материал-Склад - две колонки количество и Сумма
Вариантов много но ни один не работает или очень громоздкий. Желательно если в колонках нулевые значение чтобы они не присоединялись (Сам склад не может быть в отчете - типа от него поступило )
Приложение:
Отправлен: 11.09.2007, 18:48
Вопрос задал: Kvark (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Elric
Здравствуйте, Kvark!
Вам следует немного перестроить запрос.
1. Задайте отбор по заданному Складу.
2. Примените метод БИ.ИспользоватьКорСубконто(ВидыСубконто.МестаХранения) и затем в выборке получите все склады, которые корреспондировали с заданным.
Если раньше не работали с корреспондирующими выборками, рекомендую как на пример посмотреть на стандартный отчет ЖурналОрдерПоСубконто.
--------- В творчестве рождается истина
Ответ отправил: Elric (статус: Специалист)
Ответ отправлен: 11.09.2007, 21:54 Оценка за ответ: 4 Комментарий оценки: Если использовать Журнал-ордер и ведомость по Субконто
Например выбрать ВидСубконто 1 –Места Хранения– Отбирать и выбрать склад для анализа ,а вид Вид Субконто 2 -Материалы– Разворачивать то формируется отчёт где по этому складу можно посмотреть только общую сумму оборотов по дебету или по кредиту без дальнейшего разворота по Местам хранения.
Можно конечно выбрать оборот и расшифровать его подведя курсор по операциям
10,10.1; "*, Места хранения: Основной склад"; "*, Материалы: Материал 1"
Но надо чтобы вот эта расшифровка также пристегнулась к оборотам в виде отдельных колонок ( типа в том числе по Местам Хранения).
Вот если бы эту расшифровку прикрепить в виде колонок например после Оборот по Дебету – в т . ч. По местам хранения ….. и также после Оборот по кредиту – в т . ч. По местам хранения ….. то было бы то что надо. К сожалению я не представляю как это сделать – с колонками никогда не работал до этого.
или есть ещё универсальный отчет MaterialOtchet.ert - но там так же суммы есть в оборотке по выбранному складу – но расшифровки нет по складам.
Отвечает: Ромашов Евгений Николаевич
Здравствуйте, Kvark!
1 на мой взгляд в таком режиме отчет показывает внутренние перемещения номенклатуры или материалов на выбор или и того и другого.
2 лучше по моему сделать таблицу значений ее заполнить а потом выводить
3 ну и сам запрос на мой взгляд должен выглядеть следующим образом
БИ = СоздатьОбъект("БухгалтерскиеИтоги");
БИ.ИспользоватьПланСчетов(ПланыСчетов.Основной);
БИ.ИспользоватьРазделительУчета(Константа.ОсновнаяФирма);
БИ.ВключатьСубсчета(-1,-1);
БИ.ИспользоватьСубконто(ВидыСубконто.Материалы,,1);
БИ.ИспользоватьСубконто(ВидыСубконто.МестаХранения,,1);
БИ.ИспользоватьКорСубконто(ВидыСубконто.МестаХранения,,1);
БИ.Выполнитьзапрос(ДатаНач,ДатаКон,СчетТовара,,,3);
т.е получаешь материал потом склад а потом по кор. субконто выбираешь соответственно на какие склады был приход а на какие расход данные в таблицу.
4 в типовой конфигурации на субконто местахранения учет по сумме не стоит следовательно можно только количество взять или переделыть как надо
Ответ отправил: Ромашов Евгений Николаевич (статус: 3-ий класс)
Ответ отправлен: 12.09.2007, 05:21 Оценка за ответ: 4 Комментарий оценки: В типовой я переделал - в Субконто идёт учет по сумме - все проводки по 10 счёту с суммой и в документах графа Сумма отображается - учет идёт в средних ценах.
Пробовал ещё так -
Перем БИ,Таб,Значен,ТЗ,Счет;//,Товарчик,Товар;
//____________________________________________
Процедура ВыводМатериалов()
Таб.ВывестиСекцию("Склад");
Если БИ.ВыбратьСубконто(2,,,3,1,"Наименование",)=1 тогда
Ном=0;
Пока БИ.ПолучитьСубконто(2,3,)=1 цикл
Если БИ.Субконто(2).ЭтоГруппа()=1 тогда
Продолжить;
КонецЕсли;
Ном=Ном+1;
Таб.ВывестиСекцию("Строка");
КонецЦикла; // Перебор материалов
КонецЕсли;
КонецПроцедуры
//-------------------------------------------
Процедура ПоВсемМатериалам()
Если УчетСклада=1 тогда //************* Склад выбран
Таб.ВывестиСекцию("Шапка_2");
БИ.ВыбратьСубконто(1,,,1,1,"Наименование",);
Если СкладЗадан.Выбран()=0 тогда
Пока БИ.ПолучитьСубконто(1,1,)=1 цикл
ВыводМатериалов();
КонецЦикла; // Выборка складов
иначе // *** Выбран конкретный склад
БИ.ПолучитьСубконто(1,1,СкладЗадан);
ВыводМатериалов();
КонецЕсли;
иначе // *********************** Склад не учитывается
Если БИ.ВыбратьСубконто(,,,,,"Наименование",)=1 тогда
Ном=0;
Таб.ВывестиСекцию("ВсеСклады");
Таб.ВывестиСекцию("Шапка_2");
Пока БИ.ПолучитьСубконто()=1 цикл
Если БИ.Субконто().ЭтоГруппа()=1 тогда
Продолжить;
КонецЕсли;
Ном=Ном+1;
//Товарчик.Установить("Имя",БИ.Субконто());
Таб.ВывестиСекцию("Строка_1");
КонецЦикла; // Перебор материалов
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//-------------------------------------------
Процедура ВыводМатериалов2()
Ном=1;
БИ.ВыбратьСубконто(2,,,2,1,,);
БИ.ПолучитьСубконто(2,2,МатериалЗадан);
Таб.ВывестиСекцию("Строка");
КонецПроцедуры
// ------------------------------------------
Процедура ПоВыбранномуМатериалу()
Если УчетСклада=1 тогда
Таб.ВывестиСекцию("Шапка_2");
Если СкладЗадан.Выбран()=0 тогда // По всем складам
БИ.ВыбратьСубконто(1,,,1,1,"Наименование",);
Пока БИ.ПолучитьСубконто(1,1,)=1 цикл
Таб.ВывестиСекцию("Склад");
ВыводМатериалов2();
КонецЦикла;
иначе // Выбран конкретный склад
БИ.ВыбратьСубконто(1,,,1,,"Наименование",);
БИ.ПолучитьСубконто(1,1,СкладЗадан);
Таб.ВывестиСекцию("Склад");
ВыводМатериалов2();
КонецЕсли;
иначе // Склад не учитывается
Таб.ВывестиСекцию("ВсеСклады");
Таб.ВывестиСекцию("Шапка_2");
Ном=1;
БИ.ВыбратьСубконто(,,,,,,);
БИ.ПолучитьСубконто(,,МатериалЗадан);
Таб.ВывестиСекцию("Строка_1");
КонецЕсли;
КонецПроцедуры
//*******************************************
Процедура Сформировать(Режим)
Если Режим = 1 Тогда
Таб = СоздатьОбъект("Таблица");
Иначе
// Таб должна быть переменной модуля
Таб.Очистить();
КонецЕсли;
//Товарчик=СоздатьОбъект("СписокЗначений");
Таб.ИсходнаяТаблица("Таблица");
Расшифровка = СоздатьОбъект("СписокЗначений");
Расшифровка.Установить("Обновить",1);
Таб.ВывестиСекцию("Шапка");
Если УчетСклада=1 тогда
Если СкладЗадан.Выбран()=0 тогда
БИ.ИспользоватьСубконто(ВидыСубконто.МестаХранения,,1);
иначе
БИ.ИспользоватьСубконто(ВидыСубконто.МестаХранения,СкладЗадан,2);
КонецЕсли;
КонецЕсли;
Если МатериалЗадан.Выбран()=0 тогда
БИ.ИспользоватьСубконто(ВидыСубконто.Материалы,,1,1);
БИ.ВыполнитьЗапрос(ДатаНач,ДатаКон,СчетТовара,,,3,"Проводка",);
ПоВсемМатериалам();
Иначе
БИ.ИспользоватьСубконто(ВидыСубконто.Материалы,МатериалЗадан,2);
БИ.ВыполнитьЗапрос(ДатаНач,ДатаКон,СчетТовара,,,3,"Проводка",);
ПоВыбранномуМатериалу();
КонецЕсли;
//руслан
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Скл", "Справочники.МестаХранениия");
ТЗ.НоваяКолонка("Мат", "Справочники.Материалы");
ТЗ.НоваяКолонка("Обор", "Число", 10, 2);
БИ.ВыбратьПериоды();
Пока БИ.ПолучитьПериод() > 0 Цикл
//МестаХранения = БИ.МестаХранения; // не помню точно синтаксис
//Материаля = БИ.Материалы; // может БИ.Субконто("МестаХранения"); или БИ.Субконто("Материалы");
Сообщить ("Период="+БИ.ПолучитьПериод());
Склад=БИ.Субконто(1);
Материал=БИ.Субконто(2);
НаимСклад = Склад.Наименование;
НаимМатериал = Материал.Наименование;
КД1=БИ.ДО("К"); ОД1=БИ.ДО("С");
КК1=БИ.КО("К"); ОК1=БИ.КО("С");
Сообщить ("Кол.Д ="+КД1+"Об.Д="+ОД1+"Кол.К="+КК1+"Об.Д="+ОК1);
// ТЗ.Обор = БИ.ДО(); // или БИ.КО();
КонецЦикла;
//руслан
Таб.ТолькоПросмотр(1);
Таб.Показать("Движение товаров");
КонецПроцедуры
//-------------------------------------------------------
Процедура ПроверкаУчетаСклада()
Если УчетСклада=1 тогда
Форма.СкладТ.Доступность(1);
Форма.СкладЗадан.Доступность(1);
Форма.Стирание.Доступность(1);
иначе
Форма.СкладТ.Доступность(0);
Форма.СкладЗадан.Доступность(0);
Форма.Стирание.Доступность(0);
КонецЕсли;
КонецПроцедуры
//=======================================================
Процедура ПриОткрытии()
БИ=СоздатьОбъект("БухгалтерскиеИтоги");
УчетСклада=0;
ПроверкаУчетаСклада();
УчетСклада=1;
///****
// Счет = глРасшифровка.Получить("Счет");
// ПриВыбореСчета();
//ВыбВидСубконто1 = глРасшифровка.Получить("ВидСубконто1");
//Субконто1 = глРасшифровка.Получить("Субконто1");
///***
КонецПроцедуры
//=======================================================
Процедура Движение(Товар)
ТЗ=СоздатьОбъект("ТаблицаЗначений");
//ТЗ.НоваяКолонка("ИмяДок");
ТЗ.НоваяКолонка("Документ");
ТЗ.НоваяКолонка("Приход");
ТЗ.НоваяКолонка("Расход");
ТЗ.НоваяКолонка("Цена");
ТЗ.НоваяКолонка("СуммаПрих");
ТЗ.НоваяКолонка("СуммаРасх");
ИТ=СоздатьОбъект("БухгалтерскиеИтоги");
ИТ.ИспользоватьСубконто(Видысубконто.Материалы,Товар,2);
//БухИтоги.ИспользоватьСубконто(ВидыСубконто.Материалы, , 1);
Если СкладЗадан.Выбран()=0 тогда // По всем складам
//ИТ.ИспользоватьСубконто(ВидыСубконто.Склады, СкладЗадан, 2);
Иначе // склад выбран
ИТ.ИспользоватьСубконто(ВидыСубконто.Склады, СкладЗадан, 2);
КонецЕсли;
ИТ.ВыполнитьЗапрос(ДатаНач,ДатаКон,СчетТовара,,,3,"Операция",5);
ИТ.ВыбратьПериоды();
Пока ИТ.ПолучитьПериод()=1 цикл
ТЗ.НоваяСтрока();
ТЗ.Документ=ИТ.Операция.Документ;
Если ИТ.ВыбранаПоКт()=1 тогда
ТЗ.Приход=0;
ТЗ.Расход=ИТ.КО("К");
ТЗ.СуммаРасх=ИТ.КО("С");
ТЗ.Цена=Окр(ТЗ.СуммаРасх/ТЗ.Расход,2,1);
Иначе
ТЗ.Приход=ИТ.ДО("К");
ТЗ.Расход=0;
ТЗ.СуммаПрих=ИТ.ДО("С");
ТЗ.Цена=Окр(ТЗ.СуммаПрих/ТЗ.Приход,2,1);
КонецЕсли;
КонецЦикла;
Но до конца не могу до вести (мозгов мало).